我們先看 code,之後在慢慢細解每行 code 在做什麼
此次自動化的目的是
前往 Google 首頁並分別搜尋小明/小美/小華,並驗證搜尋結果第一筆標題名子是否包含以上名子及回傳該標題的網址回來。
可以先複製貼上再自己的本地專案執行看看~
*** Settings ***
Library Selenium2Library
Suite Setup Open Browser https://google.com chrome
Suite Teardown Close Browser
*** Variables ***
@{userNameList} 小明 小美 小華
*** Test Cases ***
Search Name And Verify Data
FOR ${name} IN @{userNameList}
SearchSubmit ${name}
SearchVerify ${name}
END
*** Keywords ***
SearchSubmit
[Arguments] ${name}
Input Text xpath=//div[@class="a4bIc"]/input ${name} /
submit form
SearchVerify
[Arguments] ${name}
Element Should Contain xpath=//div[@class="yuRUbf"]/a/h3 ${name}
${getUrl} Get Element Attribute xpath=//div[@class="yuRUbf"]/a href
Log ${getUrl}
有寫過 Robot framework 的高手們,看到這邊的 code 應該會吐血XDD
請先冷靜冷靜!我只是將我第一次寫的 code 貼上來的
稍後下一篇會講解優化後的版本,請到時候再來鞭XDD
*** Settings ***
Library Selenium2Library //引入 Selenium2Library 套件
Suite Setup Open Browser https://google.com chrome //再執行所有測試之前開啟 chrome 瀏覽器並導向到 https://google.com
Suite Teardown Close Browser //再執行所有測試執行結束後關閉 chrome 瀏覽器
*** Variables ***
@{userNameList} 小明 小美 小華 // 使用 @ 是 robot 的特性,代表這個參數是陣列
我個人覺得有點像是我們將 function 封裝好的感覺。
*** Keywords ***
SearchSubmit // 我自定義的 Keywords ,命名為 "搜尋並送出"
[Arguments] ${name} // 這是 robot framework keyword 自定義參數的方式,命名為 name
Input Text xpath=//div[@class="a4bIc"]/input ${name} // 這是 robot framework 原生提供的 keyword,主要為輸入框輸入 name 參數
submit form // 模擬提交表單動作
SearchVerify // 我自定義的 Keywords ,命名為 "搜尋並驗證"
[Arguments] ${name}
Element Should Contain xpath=//div[@class="yuRUbf"]/a/h3 ${name} // 這是 robot framework 原生提供的 keyword,主要為確認元件回傳內容是否包含 name 參數
${getUrl} Get Element Attribute xpath=//div[@class="yuRUbf"]/a href // 這是 robot framework 原生提供的 keyword,主要為確認元件屬性的 href 回傳內容是什麼
Log ${getUrl}
這個就有點像我們將各種 function 引入使用在某一個主要邏輯中。
*** Test Cases ***
Search Name And Verify Data // 這是我自定義的測試案例名稱為 "搜尋並且驗證資料"
FOR ${name} IN @{userNameList} // 是 robot 原生提供的 For 寫法,將 userNameList 中的元素逐一取出來
SearchSubmit ${name} // 自定義的 Keywords 為 "搜尋並送出"
SearchVerify ${name} // 自定義的 Keywords 為 "搜尋並驗證"
END
最後只要執行你的檔案,看是否能更上方 Demo 影片一致就行了
終端機輸入 robot {你的檔案名稱}.robot
個人初次寫這個的時候,其實覺得邏輯蠻奇怪的也很不適應
因為他其實跟寫 code (e.g. python/javscript 等)的感覺差蠻多的
感覺會少了很多程式邏輯感,但其實當我寫完後,回頭 review 的時候
會發現,其實 Robot framework 是真的相對簡單,也因為 Keyword 的關係
它的的整體可讀性也變很高